package cc.rengu.igas.bomp.common.dao;

import cc.rengu.igas.bomp.common.entity.AgentInfo;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 代理商信息表操作接口类
 * Created by 王成 on 2020/3/10
 */
public interface AgentInfoMapper {
    /**
     * 登记代理商信息表
     *
     * @param agentInfo 代理商信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertAgentInfo(AgentInfo agentInfo) throws Exception;

    /**
     * 更新代理商信息表
     *
     * @param agentInfo 代理商信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateAgentInfoById(AgentInfo agentInfo) throws Exception;

    /**
     * 根据非业务主键查询代理商信息
     *
     * @param instId 多法人标识
     * @param id     非业务主键
     * @return 代理商信息
     * @throws Exception 异常
     */
    AgentInfo selectAgentInfoById(String instId, String id) throws Exception;

    /**
     * 根据业务主键查询代理商信息
     *
     * @param instId    多法人标识
     * @param agentCode 代理机构代码
     * @return 代理商信息
     * @throws Exception 异常
     */
    AgentInfo selectAgentInfoByPrimaryKey(String instId, String agentCode) throws Exception;

    /**
     * 根据多法人标识查询代理商信息
     *
     * @param instId 多法人标识
     * @return 代理商信息
     * @throws Exception 异常
     */
    List<AgentInfo> selectAgentInfoByInstId(String instId) throws Exception;

    /**
     * 根据多法人标识查询代理商信息
     *
     * @param instId   多法人标识
     * @param pageInfo 分页
     * @return 代理商信息
     * @throws Exception 异常
     */
    PageResult selectAgentInfoByInstId(String instId, PageInfo pageInfo) throws Exception;

    /**
     * 根据代理机构编号与代理机构名称查询代理商信息
     *
     * @param instId         多法人标识
     * @param agentMchntNo   代理机构编号
     * @param agentMchntName 代理机构名称
     * @param signInstId     平台商户名称
     * @return 代理商信息
     * @throws Exception 异常
     */
    List<AgentInfo> selectAgentInfoByAgentMchntNoOrAgentMchntNameOrSignInstId(String instId, String agentMchntNo, String agentMchntName, String signInstId) throws Exception;


    /**
     * 根据代理机构编号与代理机构名称查询代理商信息
     *
     * @param instId         多法人标识
     * @param agentMchntNo   代理机构编号
     * @param agentMchntName 代理机构名称
     * @param signInstId     平台商户名称
     * @param pageInfo       分页
     * @return 代理商信息
     * @throws Exception 异常
     */
    PageResult selectAgentInfoByAgentMchntNoOrAgentMchntNameOrSignInstIdPageInfo(String instId, String agentMchntNo, String agentMchntName, String signInstId, PageInfo pageInfo) throws Exception;

    /**
     * 根据多个代理机构管理机构查询代理机构
     *
     * @param instId         机构号
     * @param agentMchntNo   代理机构编号
     * @param agentMchntName 代理机构名称
     * @param signInstId     平台商户名称
     * @param manageInstIds  代理机构列表
     * @return 代理机构列表
     * @throws Exception 异常信息
     */
    List<AgentInfo> bompSelectAgentInfoByManageInstIds(String instId, String agentMchntNo, String agentMchntName, String signInstId, String manageInstIds) throws Exception;

    /**
     * 根据多个代理机构管理机构查询代理机构
     *
     * @param instId         机构号
     * @param agentMchntNo   代理机构编号
     * @param agentMchntName 代理机构名称
     * @param signInstId     平台商户名称
     * @param manageInstIds  代理机构列表
     * @param pageInfo       代理机构列表
     * @return 代理机构列表
     * @throws Exception 异常信息
     */
    PageResult bompSelectAgentInfoByPageAndManageInstIds(String instId, String agentMchntNo, String agentMchntName, String signInstId, String manageInstIds, PageInfo pageInfo) throws Exception;

}
